library(tidyquant)
library(tidyverse)
library(tsibble)
library(fable)
library(feasts)

Datos

data = tq_get(c("NVDA", "MSFT"), get = "stock.prices", from = "2023-01-01", to = "2024-03-29") %>% select(symbol, date, adjusted)
data
data = tq_get(c("NVDA", "MSFT"), get = "stock.prices", from = "2023-01-01", to = "2024-03-29") %>% select(symbol, date, adjusted)
returns = data %>% group_by(symbol) %>% tq_transmute(select = adjusted,
                mutate_fun = periodReturn,
                period = "daily",
                col_rename = "return")
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
returns
returns = pivot_wider(returns, id_cols = date, names_from = symbol, values_from = return )
returns
returns = mutate(returns, t = row_number())
returns = as_tsibble(returns, index = t)
returns
fit_var = returns %>% model(VAR(vars(unique(data$symbol))))
Error in eval(y, envir = model$data, enclos = model$specials) : 
  object 'symbol' not found
fit_var |>
  forecast(h=20) |>
  autoplot(returns)
fore = fit_var |>
  forecast(h=20)
fore
cummulative_sum_nvda = cumsum(fore$.mean[, "NVDA"])
forecast_nvda = (1+cummulative_sum_nvda)*filter(data, symbol == "NVDA")$adjusted[311]
plot(forecast_nvda)
data = pivot_wider(data, id_cols = date, names_from = symbol, values_from = adjusted)
data
data = mutate(data, t = row_number())
data = as_tsibble(data, index = t)
data
returns = data %>% difference(MSFT)
fit_var = returns %>% model(VAR(vars(NVDA, MSFT)))
report(fit_var)
fit_var = data %>% model(VAR(vars(NVDA, MSFT), ic = "bic"))
report(fit_var)
fit_var = data %>% model(var = VAR(vars(NVDA, MSFT) ~ AR(10)))
report(fit_var)
fit_var |>
  augment() |>
  ACF(.innov) |>
  autoplot()
fit_var |>
  forecast(h=20) |>
  autoplot(data)
glance(fit_var)$sigma2
LS0tCnRpdGxlOiAnUyZQIDUwMCcKc3VidGl0bGU6ICdDbGFzZSBzZXJpZXMgZGUgdGllbXBvLCBwcmltYXZlcmEgMjAyNCcKYXV0aG9yOiAnRGFuaWVsIE51w7FvLCBkYW5pZWwubnVub0BpdGVzby5teCcKZGF0ZTogIkFicmlsIDEwLCAyMDI0IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogICAgdGhlbWU6IGNvc21vCiAgICBoaWdobGlnaHQ6IHRhbmdvCiAgZ2l0aHViX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICAgIGRldjoganBlZwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgZGZfcHJpbnQ6IHBhZ2VkCi0tLQoKYGBge3Igc2V0dXAsIGVjaG8gPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBmaWcuaGVpZ2h0ID0gNiwgZmlnLndpZHRoID0gNykKYGBgCgpgYGB7PWh0bWx9CjxzdHlsZT4KLmZvcmNlQnJlYWsgeyAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyBicmVhay1hZnRlcjogY29sdW1uOyB9Cjwvc3R5bGU+CmBgYAo8Y2VudGVyPiFbXShodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL2QvZGIvTG9nb19JVEVTT19ub3JtYWwuanBnKXt3aWR0aD0iMjAlIn08L2NlbnRlcj4KCmBgYHtyfQpsaWJyYXJ5KHRpZHlxdWFudCkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkodHNpYmJsZSkKbGlicmFyeShmYWJsZSkKbGlicmFyeShmZWFzdHMpCmBgYAoKCiMgRGF0b3MKCmBgYHtyfQpkYXRhID0gdHFfZ2V0KGMoIk5WREEiLCAiTVNGVCIpLCBnZXQgPSAic3RvY2sucHJpY2VzIiwgZnJvbSA9ICIyMDIzLTAxLTAxIiwgdG8gPSAiMjAyNC0wMy0yOSIpICU+JSBzZWxlY3Qoc3ltYm9sLCBkYXRlLCBhZGp1c3RlZCkKZGF0YQpgYGAKCmBgYHtyfQpkYXRhID0gdHFfZ2V0KGMoIk5WREEiLCAiTVNGVCIpLCBnZXQgPSAic3RvY2sucHJpY2VzIiwgZnJvbSA9ICIyMDIzLTAxLTAxIiwgdG8gPSAiMjAyNC0wMy0yOSIpICU+JSBzZWxlY3Qoc3ltYm9sLCBkYXRlLCBhZGp1c3RlZCkKYGBgCgpgYGB7cn0KcmV0dXJucyA9IGRhdGEgJT4lIGdyb3VwX2J5KHN5bWJvbCkgJT4lIHRxX3RyYW5zbXV0ZShzZWxlY3QgPSBhZGp1c3RlZCwKICAgICAgICAgICAgICAgIG11dGF0ZV9mdW4gPSBwZXJpb2RSZXR1cm4sCiAgICAgICAgICAgICAgICBwZXJpb2QgPSAiZGFpbHkiLAogICAgICAgICAgICAgICAgY29sX3JlbmFtZSA9ICJyZXR1cm4iKQoKcmV0dXJucwpgYGAKCgpgYGB7cn0KcmV0dXJucyA9IHBpdm90X3dpZGVyKHJldHVybnMsIGlkX2NvbHMgPSBkYXRlLCBuYW1lc19mcm9tID0gc3ltYm9sLCB2YWx1ZXNfZnJvbSA9IHJldHVybiApCnJldHVybnMKYGBgCgpgYGB7cn0KcmV0dXJucyA9IG11dGF0ZShyZXR1cm5zLCB0ID0gcm93X251bWJlcigpKQpyZXR1cm5zID0gYXNfdHNpYmJsZShyZXR1cm5zLCBpbmRleCA9IHQpCnJldHVybnMKYGBgCgpgYGB7cn0KZml0X3ZhciA9IHJldHVybnMgJT4lIG1vZGVsKFZBUih2YXJzKCkpKQpyZXBvcnQoZml0X3ZhcikKYGBgCgpgYGB7cn0KZml0X3ZhciB8PgogIGZvcmVjYXN0KGg9MjApIHw+CiAgYXV0b3Bsb3QocmV0dXJucykKYGBgCmBgYHtyfQpmb3JlID0gZml0X3ZhciB8PgogIGZvcmVjYXN0KGg9MjApCmZvcmUKYGBgCgoKYGBge3J9CmN1bW11bGF0aXZlX3N1bV9udmRhID0gY3Vtc3VtKGZvcmUkLm1lYW5bLCAiTlZEQSJdKQpmb3JlY2FzdF9udmRhID0gKDErY3VtbXVsYXRpdmVfc3VtX252ZGEpKmZpbHRlcihkYXRhLCBzeW1ib2wgPT0gIk5WREEiKSRhZGp1c3RlZFszMTFdCmBgYAoKYGBge3J9CnBsb3QoZm9yZWNhc3RfbnZkYSkKYGBgCgoKYGBge3J9CmRhdGEgPSBwaXZvdF93aWRlcihkYXRhLCBpZF9jb2xzID0gZGF0ZSwgbmFtZXNfZnJvbSA9IHN5bWJvbCwgdmFsdWVzX2Zyb20gPSBhZGp1c3RlZCkKZGF0YQpgYGAKCgpgYGB7cn0KZGF0YSA9IG11dGF0ZShkYXRhLCB0ID0gcm93X251bWJlcigpKQpkYXRhID0gYXNfdHNpYmJsZShkYXRhLCBpbmRleCA9IHQpCmRhdGEKYGBgCgpgYGB7cn0KcmV0dXJucyA9IGRhdGEgJT4lIGRpZmZlcmVuY2UoTVNGVCkKYGBgCgpgYGB7cn0KZml0X3ZhciA9IHJldHVybnMgJT4lIG1vZGVsKFZBUih2YXJzKE5WREEsIE1TRlQpKSkKYGBgCgpgYGB7cn0KcmVwb3J0KGZpdF92YXIpCmBgYAoKYGBge3J9CmZpdF92YXIgPSBkYXRhICU+JSBtb2RlbChWQVIodmFycyhOVkRBLCBNU0ZUKSwgaWMgPSAiYmljIikpCnJlcG9ydChmaXRfdmFyKQpgYGAKCmBgYHtyfQpmaXRfdmFyID0gZGF0YSAlPiUgbW9kZWwodmFyID0gVkFSKHZhcnMoTlZEQSwgTVNGVCkgfiBBUigxMCkpKQpgYGAKCmBgYHtyfQpyZXBvcnQoZml0X3ZhcikKYGBgCgpgYGB7cn0KZml0X3ZhciB8PgogIGF1Z21lbnQoKSB8PgogIEFDRiguaW5ub3YpIHw+CiAgYXV0b3Bsb3QoKQpgYGAKCmBgYHtyfQpmaXRfdmFyIHw+CiAgZm9yZWNhc3QoaD0yMCkgfD4KICBhdXRvcGxvdChkYXRhKQpgYGAKCmBgYHtyfQpnbGFuY2UoZml0X3Zhcikkc2lnbWEyCmBgYAoK